<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

/**
 * @param $code接口代码
 * @param string $message参数信息
 * @param array $data值
 * @return string|\think\response\Json
 */
function api_return($code, $message = '', $data = null)
{
    if (!is_numeric($code)) {
        return '';
    }
    $result['code'] = $code;
    $result['msg'] = $message;
    $result['data'] = $data;

    return json_encode($result,JSON_UNESCAPED_UNICODE);
}

function dataReturn($code,$msg= null,$data = [])
{
    if (!is_numeric($code)) {
        return '';
    }
    $result['code'] = $code;
    $result['msg'] = $msg;
    $result['data'] = $data;

    return $result;
}

function jsonReturn($code,$msg='',$data=[])
{
    $result['code'] = (int)$code;
    $result['msg'] = $msg;
    $result['data'] = $data;
    return json($result);
}

/**
 * @param $url
 * @param null $data
 * @return mixed
 * curl访问https地址
 */
function creat_curl($url,$data=null)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    //post传输
    if($data){
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    }

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $res = curl_exec($ch);
    $error = curl_errno($ch);
    curl_close($ch);
    return $res;
}

/**
 * 创建多层目录
 * @param string $dirs
 * @param number $mode
 * @return boolean
 */
function mkdirs($dirs = '', $mode = 0777) {
    if (! is_dir ( $dirs )) {
        mkdirs ( dirname ( $dirs ), $mode );
        $ret = @mkdir ( $dirs, $mode );
        chmod ( $dirs, $mode );
        return $ret;
    }
    return true;
}

/**
 * 不存在就新建文件
 */
function create_file($l1, $l2 = '') {
    $l1 = str_replace ( '//', '/', $l1 );
    if (! file_exists ( $l1 )) {
        write_file ( $l1, $l2 );
        return true;
    } else {
        return true;
    }
}

/**
 * 生成文件并写入内容，自动创建多层目录
 *
 * @param string $filename
 *        	相对路径: ./1/2/3.html
 * @param string $content
 */
function write_file($filename = '', $content = '') {
    $dir = dirname ( $filename );
    if (! is_dir ( $dir )) {
        mkdirs ( $dir );
    }
    $file = @file_put_contents ( $filename, $content );
    chmod ( $filename, 0777 );
    return $file;
}

/**
 * 写入数组到文件
 *
 * @param string $filename
 * @param string $arr
 */
function arr2file($filename = '', $arr = '') {
    if (is_array ( $arr )) {
        // 数组转字符串
        $con = var_export ( $arr, true );
    } else {
        $con = $arr;
    }
    $con = "<?php\nreturn $con;\n?>";
    write_file ( $filename, $con );
}

/**
 * @param $value值
 * @param $table表名不带前缀
 * @param $field表字段
 * @param $where 自定义筛选条件
 * @return bool
 * 查询新增值是否唯一
 */
function unique_add_value($value,$table,$field,$where='1=1')
{
    $data = \think\Db::name($table)->where($field,$value)->where($where)->find();
    if($data){
        return true;
    }else{
        return false;
    }
}

/**
 * @param $value查询的值
 * @param $id修改数据所在的id
 * @param $table表名
 * @param $field表字段
 * @param $table_id 表主键id字段名
 * @param $where 自定义筛选条件
 * @return bool
 * 查询修改值是否唯一
 */
function unique_update_value($value,$id,$table,$field,$table_id,$where='1=1')
{
    $data = \think\Db::name($table)->where($field,$value)->where($table_id,'neq',$id)->where($where)->find();
    if($data){
        return true;
    }else{
        return false;
    }
}

function getToken()
{
    return md5(microtime().rand(1,10000));
}

/**
 * @param $birth
 * 计算年龄
 */
function caleAge($birth)
{
    list($year,$month,$day) = explode("-",date('Y-m-d',$birth));
    $year_diff = date("Y") - $year;
    $month_diff = date("m") - $month;
    $day_diff  = date("d") - $day;
    if ( $month_diff < 0){
        $year_diff--;
    }else if($month_diff ==0 && $day_diff < 0 ){
        $year_diff--;
    }

    return $year_diff;
}

/**
 * 批量验证参数是否为空
 * @return boolean
 */
function emptys()
{
    $fun = func_get_args();
    foreach ($fun as $v) {

        if (is_array($v) && count($v) == 0) {
            return true;
        } elseif (is_string($v) && strlen($v) < 1) {
            return true;
        } elseif (empty($v)) {
            return true;
        }
    }
    return false;
}

/**
 * @param $arr
 * @param $key
 * @return array
 * 二位数组去重
 */
function array_unset_tt($arr,$key)
{           //建立一个目标数组
    $res = array();
    foreach ($arr as $value) {
        //查看有没有重复项
        if (isset($res[$value[$key]])) {
            //有：销毁
            unset($value[$key]);
        } else {
            $res[$value[$key]] = $value;
        }
    }
    return $res;
}

function env($key,$default=null)
{
    $value = \think\Env::get($key);
    if($value === false){
        return $default;
    }
    switch (strtolower($value)) {
        case 'true':
        case '(true)':
            return true;
        case 'false':
        case '(false)':
            return false;
        case 'empty':
        case '(empty)':
            return '';
        case 'null':
        case '(null)':
            return;
    }
    return $value;
}

// 过滤掉emoji表情
function filterEmoji($str)
{
    $str = preg_replace_callback(
        '/./u',
        function (array $match) {
            return strlen($match[0]) >= 4 ? '' : $match[0];
        },
        $str);

    return $str;
}

/**
 * @param $string 传递的字符串
 * @return int 1是，0否
 * 检查字符串是否为整数
 */
function is_intval($string)
{
    $reg = '/^-?\d+$/';
    return preg_match($reg,$string);
}

function xmlstr_to_array($xmlstr)
{
    //将XML转为array
    libxml_disable_entity_loader(true);
    return json_decode(json_encode(simplexml_load_string($xmlstr, 'SimpleXMLElement',LIBXML_NOCDATA)), true);
}
